The invention relates generally to testing of software, and more specifically to systems and methods for automated testing of software that executes business processes.
Business process application software allows for the definition and execution of business processes in a computer system. Examples of business processes include updating customer information, receiving and fulfilling orders, synchronizing customer information stored on multiple computer systems, and generating a price quote. Business processes are often associated with data descriptions and transformation rules for accessing individual data items, such as a customer name or a unit price. A business process specifies a sequence of activities to be performed in a specified order, and may specify conditional and repeated execution of activities. Business process application software can execute a business process, prompting for or retrieving input data as needed, and produce results or effects, such as output data or execution of database transactions. A business process application configuration includes a set of business processes and associated data, including data descriptions and transformation descriptions, which specify how to execute one or more particular business processes using general-purpose business process application software, such as SAP or Siebel. The configuration information is typically represented as data stored in disk files or in an online repository, depending on the particular business process application software. The business process software can load the configuration information, including the business process, and subsequently execute the business processes. For example, a shipping company may have a business process application configuration consisting of a computer system running SAP software with a ShipmentReceived business process, which is to be executed when a shipping container arrives at a transit hub. The ShipmentReceived business process updates an inventory database of shipping container locations and invokes another computer system to route the shipping container to its destination. The shipping company may have a second business process application configuration consisting of another computer system running Siebel software with a ConfirmOrder business process, which is to be executed when an order has been processed. The ConfirmOrder business process, which is invoked by an order processing system, retrieves the customer's e-mail address from Siebel and sends an e-mail notice to the customer describing the order.
It is desirable to be able to automatically test the execution of a business process application configuration by a business process application for correctness. Testing a software program involves interacting with the program in a test environment and verifying that the program operates correctly, based on the program's behavior in response to input supplied during the interaction. The interaction may be manual testing performed by a human or automated testing performed by a test program. Automated testing is desirable because human effort is not necessary to perform the testing. However, substantial time and effort may still be required to create the test program that will perform the automated testing. Software programs called test automation systems have been developed to reduce the time and effort necessary to create test programs. Existing test automation systems can generate automated tests, but the tests generated are dependent on many details of the application, including many design-time user interface details that are generally not relevant to the correct functioning of business process configurations. For example, the position of a text input box on a screen does not affect the correctness of execution of a business process. The position of a text input box may be important at design time, when the business process is created and configured, but is not important at run time, when the business process is actually executed. Existing test automation systems broadly capture information about behavior of the application that is not relevant to the correct execution of a business process, and generate automated tests that rely on this unnecessary information. The drawback of this broad capturing of information is that any changes to the business process application configuration, such as changes to details of user interface objects, are likely to cause the test to fail, because the test automation system requires the captured information to closely match the actual behavior of the application when a test is run. Examples of changes that are likely to cause tests to fail include changes to application user interface objects such as text boxes, menus, screen layouts, or replacement of one object by another type of object.
It would be desirable to be able to generate test programs that continue to operate correctly when unrelated features of the software being tested change.